Skip to content

fix: complete V3 execution isolation and release candidate validation - #328

Open
EvanProgramming wants to merge 193 commits into
mainfrom
Evan/v3-panstar-finalization-20261111
Open

EvanProgramming wants to merge 193 commits into
mainfrom
Evan/v3-panstar-finalization-20261111

Conversation

@EvanProgramming

Copy link
Copy Markdown
Owner

Completes the V3 candidate across native provider execution, working plans, scoped authorization, persistent tool evidence and child-agent coordination. V2/V3 evaluations now run behind a trusted parent that protects original tests, binds single-use execution authorization, isolates actors and cleans their processes. Physical source facts and recovery episodes are verified independently of model prose and legacy workflow heuristics.

The current signed candidate is 1fd3f270ef17aa4cbb5cc669a1cf8c105bfe1b4a. All 13 offline release gates have exact-candidate evidence and owner signatures:

  • Complete local suite: 1,797 tests, 32 declared skips; checks, documentation, architecture and interactive TUI acceptance pass.
  • Six-platform workflow: Python 3.12/3.13 across Linux/macOS/Windows, each with at least 1,800 seconds of sustained runtime. Windows retains its documented POSIX test exceptions. All 19 jobs completed, 18 successful and the declared core-only job skipped.
  • Native isolation workflow: all four Linux/macOS combinations pass 199 cases each. Original ZIP sizes, digests, CRCs and retained bytes are verified.
  • Nine unpublished artifacts are signed; retained wheel and sdist installs were verified outside the checkout. Packaging, Docker persistence and installed update checks pass.

Merge remains pending the four original model gates: a fresh 180-row matched campaign, 54-row routing evaluation, 36-row model-routing evaluation and independent review of the seven empirical requirements. These use Panstar native Responses with the built-in Auto selector, inexpensive gpt-6-sol / gpt-6.1-sol roles and complete cumulative cost accounting. Original statistical, safety, usage and protocol thresholds remain unchanged. Historical incomplete runs are retained and are not pooled into current results.

Credentials and runtime data are excluded. No tag, draft/public Release, package upload or preview publisher is created by this change. Main must advance non-forcibly to the same fully accepted SHA only after final review.

Preserve canonical tool constraints through native JSON Schema with shared strict validation. Keep the existing typed OpenAPI descriptors and require the verified SDK floor.

Adapt original baseline Auto configuration and native stream fixtures; verify the bounded plan acceptance continuation without granting execution or completion.
@ghfind-review ghfind-review Bot added the review: high ghfind author score; see https://ghfind.com label Nov 12, 2026
@coderabbitai

coderabbitai Bot commented Nov 12, 2026

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: af341bdc-09cc-4e0a-a929-f374debe813b
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 12, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-12T03:54:01.792376Z 1fd3f27 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1fd3f270ef

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +923 to +928
data = receipt.tool_result.data if receipt.tool_result is not None else None
if (isinstance(data, dict) and isinstance(data.get("content"), str)
and data.get("truncated") is False):
read_content = data["content"]
else:
criterion_status = "unavailable"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve complete read evidence before archiving tool output

When a successful read_file result exceeds the 12,000-character serialized-output threshold, _make_execution_receipt replaces its data with an artifact reference before this check runs. Consequently, even a complete read with a matching acceptance predicate lacks content and truncated here and is marked unavailable. For example, a roughly 7 KB file containing the required text cannot satisfy its Working Plan read criterion, and reading the artifact cannot satisfy the original read_file contract either. Retain the trusted complete content for predicate evaluation separately from the bounded provider/journal representation.

Useful? React with 👍 / 👎.

Comment on lines +186 to +187
if sum(handle.process.poll() is None for handle in self._handles.values()) >= 32:
raise RuntimeError("session process handle limit reached")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bound retained handles when allowing completed-process replacement

In a long-lived session that repeatedly launches background commands, counting only running processes removes the previous bound on retained handles: every completed handle remains in _handles, and neither completion nor close() evicts it. Each handle retains up to one million characters from each output stream, so sequential commands can now grow session memory without limit despite never approaching 32 concurrent processes. An isolated run confirmed that 40 completed commands leave 40 retained handles and zero active processes. Add bounded retention or eviction for completed handles alongside the concurrent-process limit.

Useful? React with 👍 / 👎.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: high ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant